package pe.com.bbva.modpre.utileria;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPalette;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;

public class ReporteExcel {
	
	public static HSSFColor setColor(HSSFWorkbook workbook, byte r,byte g, byte b){
		HSSFPalette palette = workbook.getCustomPalette();
		HSSFColor hssfColor = null;
		hssfColor= palette.findColor(r, g, b); 
		if (hssfColor == null ){
		    palette.setColorAtIndex(HSSFColor.LAVENDER.index, r, g,b);
		    hssfColor = palette.getColor(HSSFColor.LAVENDER.index);
		}

		 return hssfColor;
	}

	
	public static ByteArrayOutputStream exportarExcel(String[] cabecera,String titulo,List<String[]> filasTablas){
		
		HSSFWorkbook libro = new HSSFWorkbook();
		HSSFSheet hoja = libro.createSheet();
		
		HSSFRow fila = null;
		HSSFCell celda = null;
		int iFila = 0;
		
	    //setear colores
	    HSSFCellStyle styleCabecera = libro.createCellStyle();  
	    styleCabecera.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 
		HSSFColor colorCabecera = setColor(libro, (byte)21, (byte)110, (byte)180);
		HSSFFont fontCabecera = libro.createFont();
		fontCabecera.setColor(HSSFColor.WHITE.index);
		styleCabecera.setFillForegroundColor(colorCabecera.getIndex());
		styleCabecera.setFont(fontCabecera);
		
		HSSFCellStyle styleTitulo = libro.createCellStyle();
		HSSFFont fontTitulo = libro.createFont();
		fontTitulo.setFontHeightInPoints((short)10);
		fontTitulo.setFontName("Arial");
		fontTitulo.setColor(IndexedColors.BLACK.getIndex());
		fontTitulo.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
		fontTitulo.setItalic(false);
		styleTitulo.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
		styleTitulo.setFillForegroundColor(HSSFColor.WHITE.index);
		styleTitulo.setFont(fontTitulo);
		styleTitulo.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		fila = hoja.createRow(iFila++);
		fila.setRowStyle(styleTitulo);
		celda=fila.createCell(0);
		celda.setCellValue(titulo);
		celda.setCellStyle(styleTitulo);
		
		fila = hoja.createRow(iFila++);
		
		int columna = 0;
		for (String string : cabecera) {
			celda=fila.createCell(columna);
			celda.setCellValue(string);
			celda.setCellStyle(styleCabecera);
			
			columna++;
		}
		
		for (String[] strings : filasTablas) {
			fila = hoja.createRow(iFila++);
			columna = 0;
			for (String string : strings) {
				celda=fila.createCell(columna);
				celda.setCellValue(string);
				columna++;
			}
		}
		for(int numColumnas=0;numColumnas<columna;numColumnas++){
			hoja.autoSizeColumn(numColumnas);
		}

		ByteArrayOutputStream baos = new ByteArrayOutputStream();

		try {
			libro.write(baos);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return baos;
	}
	
}
